Panel = {};

Panel.emoticon = function(xoros) {
	return $('<img>').data('omada', 1).
	data('refresh', function(img) {
		if (xoros.flags.emoticon) img.attr({
			src: Client.server + 'ikona/emoticon/set1/alien.png',
			title: 'Απόκρυψη στήλης emoticons',
		});
		else img.attr({
			src: Client.server + 'ikona/emoticon/set1/gelaki.png',
			title: 'Εμφάνιση στήλης emoticons',
		});
	}).
	on('click', function(e) {
		var epanelW;

		xoros.inputRefocus(e);
		if (xoros.flags.emoticon) {
			xoros.flags.emoticon = false;
			epanelW = xoros.epanelDOM.outerWidth(true);
			$(this).data('epanelW', epanelW);
			xoros.epanelDOM.css('display', 'none');
			(xoros.pssDOM.outerWidth(true) > 0 ? xoros.pssDOM : xoros.mainDOM).css({
				width: '+=' + epanelW + 'px',
			});
		}
		else {
			xoros.flags.emoticon = true;
			(xoros.pssDOM.outerWidth(true) > 0 ? xoros.pssDOM : xoros.mainDOM).css({
				width: '-=' + $(this).data('epanelW') + 'px',
			});
			xoros.epanelDOM.css('display', 'inline-block');
		}
		xoros.cpanel.refresh();
	});
};

Panel.gnomiko = function(xoros) {
	return $('<img>').data('omada', 1).attr({
		src: Client.server + 'ikona/panel/misc/kafedaki.png',
		title: 'Γνωμικά',
	}).
	on('click', function(e) {
		xoros.inputRefocus(e);
	});
};

Panel.xrisimiSimvouli = function(xoros) {
	return $('<img>').data('omada', 1).attr({
		src: Client.server + 'ikona/panel/misc/lamp.png',
		title: 'Χρήσιμες συμβουλές',
	}).
	on('click', function(e) {
		xoros.inputRefocus(e);
	});
};

Panel.trapeziExodos = function(xoros) {
	return $('<img>').data('omada', 1).attr({
		src: Client.server + 'ikona/panel/pexnidi/exodos.png',
		title: 'Έξοδος από το τραπέζι',
	}).
	data('check', function() {
		return Kafenio.egoTrapezi();
	}).
	on('click', function(e) {
		var ico = $(this);

		xoros.inputRefocus(e);
		Client.fyi.pano('Έξοδος από το τραπέζι. Παρακαλώ περιμένετε…');
		ico.working(true);
		Client.skiserService('exodosTrapezi').
		done(function(rsp) {
			ico.working(false);
			Client.fyi.epano(rsp);
		}).
		fail(function(err) {
			ico.working(false);
			Client.skiserFail(err);
		});
	});
};

Panel.kinito = function(xoros, omada) {
	var win;

	win = (xoros === Kafenio ? self : Tsoxa.opener);
	if (omada === undefined) omada = 2;
	return $('<img>').data('omada', omada).attr({
		src: Client.server + 'ikona/panel/misc/kinito.png',
	}).
	data('refresh', function(img) {
		if (win.Client.session.kinito) img.css('opacity', 0.5).attr({
			title: 'Απενεργοποίηση πληκτρολογίου αφής',
		});
		else img.css('opacity', '').attr({
			title: 'Ενεργοποίηση πληκτρολογίου αφής',
		});
	}).
	on('click', function(e) {
		var params;

		if (win.Client.session.kinito) {
			delete win.Client.session.kinito;
			params = '';
		}
		else {
			win.Client.session.kinito = 1;
			params = 'energo=1';
		}

		$(this).data('refresh')($(this));
		xoros.inputRefocus(e);
		Client.ajaxService('misc/kinito.php', params).
		done(function(rsp) {
			Client.fyi.epano(rsp);
		}).
		fail(function(err) {
			Client.skiserFail(err);
		});
	});
};

Panel.ananeosiSkinikou = function(xoros) {
	return $('<img>').data('omada', 1).attr({
		src: Client.server + 'ikona/panel/misc/bugFix.png',
		title: 'Ανανέωση σκηνικού',
	}).
	data('check', function() {
		return Kafenio.hasOwnProperty('skiniko');
	}).
	on('click', function(e) {
		var ico = $(this);

		xoros.inputRefocus(e);
		Client.fyi.pano('Ανανέωση σκηνικού. Παρακαλώ περιμένετε…', 0);
		ico.working(true);
		Kafenio.skiniko.stisimo(function() {
			Client.fyi.pano();
			ico.working(false);
			if (Kafenio.isTsoxa()) Tsoxa.refreshDOM();
		});
	});
};

Panel.pektisTheatis = function(xoros) {
	return $('<img>').data('omada', 2).attr({
		src: Client.server + 'ikona/panel/pexnidi/theatis.png',
		title: 'Παίκτης/Θεατής',
	}).
	data('check', function() {
		var trapezi = Kafenio.egoTrapezi();
		if (!trapezi) return false;
		if (Kafenio.egoIsPektis()) return true;
		if (!trapezi.trapeziKeniThesi()) return false;
		return trapezi.trapeziIsProsklisi(Client.session.pektis);
	}).
	on('click', function(e) {
		var ico = $(this);

		xoros.inputRefocus(e);
		Client.fyi.pano('Εναλλαγή παίκτη/θεατή. Παρακαλώ περιμένετε…', 0);
		ico.working(true);
		Client.skiserService('pektisTheatis').
		done(function(rsp) {
			Client.fyi.pano();
			ico.working(false);
		}).
		fail(function(err) {
			Client.skiserFail(err);
			ico.working(false);
		});
	});
};

Panel.diataxi = function(xoros) {
	return $('<img>').data('omada', 2).attr({
		src: Client.server + 'ikona/panel/pexnidi/diataxi.png',
		title: 'Αλλαγή διάταξης παικτών',
	}).
	data('check', function() {
		var trapezi = Kafenio.egoTrapezi();
		if (!trapezi) return false;
		if (Kafenio.egoOxiPektis()) return false;
		return !trapezi.trapeziIsDianomi();
	}).
	on('click', function(e) {
		var ico = $(this);

		xoros.inputRefocus(e);
		$(this).working(true);
		Client.skiserService('diataxi').
		done(function(rsp) {
			ico.working(false);
		}).
		fail(function(err) {
			Client.skiserFail(err);
			ico.working(false);
		});
	});
};

Panel.roloi = function(xoros) {
	return $('<img>').data('omada', 2).attr({
		src: Client.server + 'ikona/panel/pexnidi/roloi.png',
		title: 'Κυκλική εναλλαγή θέσης',
	}).
	data('check', function() {
		var trapezi = Kafenio.egoTrapezi();
		if (!trapezi) return false;
		if (Kafenio.egoOxiPektis()) return true;
		return !trapezi.trapeziIsDianomi();
	}).
	on('click', function(e) {
		var ico = $(this);

		xoros.inputRefocus(e);
		$(this).working(true);
		Client.skiserService('roloi').
		done(function(rsp) {
			ico.working(false);
		}).
		fail(function(err) {
			Client.skiserFail(err);
			ico.working(false);
		});
	});
};

Panel.kasaAlagi = function(xoros) {
	return $('<img>').data('omada', 2).attr({
		src: Client.server + 'ikona/panel/pexnidi/kasa.png',
		title: 'Κάσα 50/30',
	}).
	data('check', function() {
		var trapezi = Kafenio.egoTrapezi();
		if (!trapezi) return false;
		if (Kafenio.egoOxiPektis()) return false;
		return !trapezi.trapeziIsDianomi();
	}).
	on('click', function(e) {
		var ico = $(this), trapezi, kasa;

		xoros.inputRefocus(e);
		trapezi = Kafenio.egoTrapezi();
		if (!trapezi) return;
		kasa = trapezi.trapeziKasaGet() === 50 ? 30 : 50;
		$(this).working(true);
		Client.skiserService('trparamSet', 'param=ΚΑΣΑ', 'timi=' + kasa).
		done(function(rsp) {
			ico.working(false);
		}).
		fail(function(err) {
			Client.skiserFail(err);
			ico.working(false);
		});
	});
};

Panel.kasaAfxisi = function(xoros) {
	return $('<img>').data('omada', 2).attr({
		src: Client.server + 'ikona/panel/pexnidi/kasaPano.png',
		title: 'Αύξηση κάσας',
	}).
	data('check', function() {
		var trapezi = Kafenio.egoTrapezi();
		if (!trapezi) return false;
		if (Kafenio.egoOxiPektis()) return false;
		return trapezi.trapeziIsDianomi();
	}).
	on('click', function(e) {
		var ico = $(this), trapezi, kasa;

		xoros.inputRefocus(e);
		trapezi = Kafenio.egoTrapezi();
		if (!trapezi) return;
		kasa = trapezi.trapeziKasaGet() + 10;
		$(this).working(true);
		Client.skiserService('trparamSet', 'param=ΚΑΣΑ', 'timi=' + kasa, 'apodoxi=1').
		done(function(rsp) {
			ico.working(false);
		}).
		fail(function(err) {
			Client.skiserFail(err);
			ico.working(false);
		});
	});
};

Panel.kasaMiosi = function(xoros) {
	return $('<img>').data('omada', 2).attr({
		src: Client.server + 'ikona/panel/pexnidi/kasaKato.png',
		title: 'Μείωση κάσας',
	}).
	data('check', function() {
		var trapezi = Kafenio.egoTrapezi();
		if (!trapezi) return false;
		if (Kafenio.egoOxiPektis()) return false;
		return trapezi.trapeziIsDianomi();
	}).
	on('click', function(e) {
		var ico = $(this), trapezi, kasa;

		xoros.inputRefocus(e);
		trapezi = Kafenio.egoTrapezi();
		if (!trapezi) return;
		kasa = trapezi.trapeziKasaGet() - 10;
		$(this).working(true);
		Client.skiserService('trparamSet', 'param=ΚΑΣΑ', 'timi=' + kasa, 'apodoxi=1').
		done(function(rsp) {
			ico.working(false);
		}).
		fail(function(err) {
			Client.skiserFail(err);
			ico.working(false);
		});
	});
};

Panel.asoiNai = function(xoros) {
	return $('<img>').data('omada', 2).attr({
		src: Client.server + 'ikona/panel/pexnidi/asoiOn.png',
		title: 'Να παίζονται οι άσοι',
	}).
	data('check', function() {
		var trapezi = Kafenio.egoTrapezi();
		if (!trapezi) return false;
		if (trapezi.trapeziIsAsoi()) return false;
		if (Kafenio.egoOxiPektis()) return false;
		return !trapezi.trapeziIsDianomi();
	}).
	on('click', function(e) {
		var ico = $(this);

		xoros.inputRefocus(e);
		$(this).working(true);
		Client.skiserService('trparamSet', 'param=ΑΣΟΙ', 'timi=ΝΑΙ').
		done(function(rsp) {
			ico.working(false);
		}).
		fail(function(err) {
			Client.skiserFail(err);
			ico.working(false);
		});
	});
};

Panel.asoiOxi = function(xoros) {
	return $('<img>').data('omada', 2).attr({
		src: Client.server + 'ikona/panel/pexnidi/asoiOff.png',
		title: 'Να μην παίζονται οι άσοι',
	}).
	data('check', function() {
		var trapezi = Kafenio.egoTrapezi();
		if (!trapezi) return false;
		if (trapezi.trapeziOxiAsoi()) return false;
		if (Kafenio.egoOxiPektis()) return false;
		return !trapezi.trapeziIsDianomi();
	}).
	on('click', function(e) {
		var ico = $(this);

		xoros.inputRefocus(e);
		$(this).working(true);
		Client.skiserService('trparamSet', 'param=ΑΣΟΙ', 'timi=ΟΧΙ').
		done(function(rsp) {
			ico.working(false);
		}).
		fail(function(err) {
			Client.skiserFail(err);
			ico.working(false);
		});
	});
};

Panel.pasoNai = function(xoros) {
	return $('<img>').data('omada', 2).attr({
		src: Client.server + 'ikona/panel/pexnidi/pasoOn.png',
		title: 'Να παίζεται το πάσο',
	}).
	data('check', function() {
		var trapezi = Kafenio.egoTrapezi();
		if (!trapezi) return false;
		if (trapezi.trapeziIsPaso()) return false;
		if (Kafenio.egoOxiPektis()) return false;
		return !trapezi.trapeziIsDianomi();
	}).
	on('click', function(e) {
		var ico = $(this);

		xoros.inputRefocus(e);
		$(this).working(true);
		Client.skiserService('trparamSet', 'param=ΠΑΣΟ', 'timi=ΝΑΙ').
		done(function(rsp) {
			ico.working(false);
		}).
		fail(function(err) {
			Client.skiserFail(err);
			ico.working(false);
		});
	});
};

Panel.pasoOxi = function(xoros) {
	return $('<img>').data('omada', 2).attr({
		src: Client.server + 'ikona/panel/pexnidi/pasoOff.png',
		title: 'Να μην παίζεται το πάσο',
	}).
	data('check', function() {
		var trapezi = Kafenio.egoTrapezi();
		if (!trapezi) return false;
		if (trapezi.trapeziOxiPaso()) return false;
		if (Kafenio.egoOxiPektis()) return false;
		return !trapezi.trapeziIsDianomi();
	}).
	on('click', function(e) {
		var ico = $(this);

		xoros.inputRefocus(e);
		$(this).working(true);
		Client.skiserService('trparamSet', 'param=ΠΑΣΟ', 'timi=ΟΧΙ').
		done(function(rsp) {
			ico.working(false);
		}).
		fail(function(err) {
			Client.skiserFail(err);
			ico.working(false);
		});
	});
};

Panel.apodoxi = function(xoros) {
	return $('<img>').data('omada', 1).
	data('check', function() {
		var trapezi = Kafenio.egoTrapezi();
		if (!trapezi) return false;
		if (Kafenio.egoOxiPektis()) return false;
		if (Debug.flagGet('apodoxiPanta')) return true;
		return !trapezi.trapeziIsDianomi();
	}).
	data('refresh', function(img) {
		var trapezi, thesi;

		trapezi = Kafenio.egoTrapezi();
		if (!trapezi) return;

		thesi = trapezi.trapeziThesiPekti(Client.session.pektis);
		if (trapezi.trapeziIsApodoxi(thesi)) img.attr({
			src: Client.server + 'ikona/panel/pexnidi/ixodopa.png',
			title: 'Επαναδιαπραγμάτευση όρων παιχνιδιού',
		});
		else if (trapezi.trapeziApodoxiCount() === (Prefadoros.thesiMax - 1)) img.attr({
			src: Client.server + 'ikona/panel/pexnidi/go.jpg',
			title: 'Αποδοχή όρων και εκκίνηση της παρτίδας',
		});
		else img.attr({
			src: Client.server + 'ikona/panel/pexnidi/apodoxi.png',
			title: 'Αποδοχή όρων παιχνιδιού',
		});
	}).
	on('click', function(e) {
		var ico = $(this);

		xoros.inputRefocus(e);
		$(this).working(true);
		Client.skiserService('apodoxi').
		done(function(rsp) {
			ico.working(false);
		}).
		fail(function(err) {
			Client.skiserFail(err);
			ico.working(false);
		});
	});
};

Panel.soundEntasi = function(xoros, omada) {
	return $('<img>').data('omada', omada).
	attr({
		src: Client.server + 'ikona/panel/misc/entasi.png',
		title: 'Ένταση ήχου: ' + Client.session.entasi,
	}).
	on('click', function(e) {
		xoros.inputRefocus(e);
		switch (Client.session.entasi) {
		case 'ΚΑΝΟΝΙΚΗ': Client.session.entasi = 'ΔΥΝΑΤΗ'; break;
		case 'ΔΥΝΑΤΗ': Client.session.entasi = 'ΣΙΩΠΗΛΟ'; break;
		case 'ΣΙΩΠΗΛΟ': Client.session.entasi = 'ΧΑΜΗΛΗ'; break;
		default: Client.session.entasi = 'ΚΑΝΟΝΙΚΗ'; break;
		}
		$(this).attr('title', 'Ένταση ήχου: ' + Client.session.entasi);
		Client.fyi.pano('Ένταση ήχου: ' + Client.session.entasi);
		Client.sound.beep();
		Client.ajaxService('misc/setCookie.php', 'tag=entasi', 'val=' + Client.session.entasi);

		if (self.Tsoxa) {
			Tsoxa.opener.Client.session.entasi = Client.session.entasi;
			Tsoxa.opener.Kafenio.kpanel.refresh();
			return;
		}

		if (Kafenio.oxiTsoxa()) return;
		Kafenio.tsoxa.Client.session.entasi = Client.session.entasi;
		Kafenio.tsoxa.Tsoxa.kpanel.refresh();
	});
};
